iT邦幫忙

2022 iThome 鐵人賽

DAY 16
3
Modern Web

今天我想來在 Angular 應用程式上加上測試保護系列 第 16

Day 16 - 單元測試 - Karma 組態設定與使用

  • 分享至 

  • xImage
  •  

前言

先前幾篇說明了利用 Jasmine 框架來撰寫單元測試程式,並在文章的最後都會執行 Karma 來確認測試的結果;這一篇來說明 Karma 常用的設定與使用方式。

Karma 組態設定

當我們利用 Angular CLI 建立專案時,在專案資料夾內會一併新增 karma.config.js 檔案,這就是 Karma 的組態設定檔。除了這檔案名稱外,Karma 也會從下列位置去找尋組態檔:

  • ./karma.conf.coffee
  • ./karma.conf.ts
  • ./.config/karma.config.js
  • ./.config/karma.conf.coffee
  • ./.config/karma.conf.ts

此檔案的內容,會如下面所示的來設定 Karma 各項參數。

module.exports = (config) => {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    //...
  });
}

執行測試的瀏覽器

在預設狀況下,執行 ng test 命令時都會啟動 Chrome 來執行,為此除了 Angular CLI 建立時會安裝 karma-chrome-launcher 這個外掛,並在組態設定的 plugins 屬性內。

plugins: [require('karma-chrome-launcher')]

若希望要改成用 Firefox 來執行,則就需要去安裝 karma-chrome-launcher 外掛,也將其設定在 plugins 參數內。如此一來,就可以利用 ng test --browsers=Firefox 命令來由 Firefox 執行。

plugins: [require('karma-firefox-launcher')]

順道一提,若不希望每次都啟動 Chrome 來確認測試結果,也可以執行 ng test --browsers=ChromeHeadless 命令,就可以如下圖在 Terminal 顯示結果。

https://ithelp.ithome.com.tw/upload/images/20221001/201096453goBHMRYxO.png

進一步如果希望將預設啟動的瀏覽器,則可以修改組態檔內的 browsers 參數。

browsers: ['Firefox']

測試結果報表

在利用 ng test 啟動 Karma 後,會在 Chrome 顯示如下圖的測試結果報表,這是由 Angular CLI 預設使用的 karma-jasmine-html-reporter 外掛。

https://ithelp.ithome.com.tw/upload/images/20221001/20109645cxkyRtdV9U.png

我們也可以使用其他的結果報表,例如在使用 ChromeHeadless 做為執行瀏覽器時,就可以安裝 karma-spec-reporter 外掛,並設定至 plugins 參數內,就可以使用 ng test --browsers=ChromeHeadless --reporters spec 命令執行,就可以得到下圖的結果。同樣地,我們可以設定 reporters 參數來設定預設的測試結果報表。

https://ithelp.ithome.com.tw/upload/images/20221001/20109645A688mgo02v.png

測試覆蓋率報表

透過了測試程式的撰寫來保護產品程式,若我們要知道整個應用程式多少百分比受到測試保護,那就需要利用 ng test --code-coverage 來跑出測試覆蓋的報表。而在組態檔的 coverageReporter 屬性,就是用來定義測試覆蓋率的檔案存放位置與報表結果。

在預設狀態下有兩種覆蓋率的報表,其一是如下圖在 Terminal 所顯示:

https://ithelp.ithome.com.tw/upload/images/20221001/20109645DaXGAfqYPX.png

另外一種,則是在專案目錄下的 coverage/專案名稱 資料夾內,只要開啟 index.html 檔案就可以知道應用程式的測試覆蓋率。

https://ithelp.ithome.com.tw/upload/images/20221001/20109645iBJXVUOy6J.png

在此結果頁面,還可以更進一步去看每個 TypeScript 檔案有哪些程式沒有被單元測試覆蓋。

https://ithelp.ithome.com.tw/upload/images/20221001/20109645S7YRHBbgks.png

接下來

這一篇說明了 Karma 的組態設定,完整的測試程式可以參考 GitHub。到目前為止,針對 Angular 的單元測試就到一個段落了,接下來就會進入下一個部份 - 端對端測試。


上一篇
Day 15 - 單元測試 - 測試 Angular 元件 - 使用 Page 物件
下一篇
Day 17 - 端對端測試 - 初探
系列文
今天我想來在 Angular 應用程式上加上測試保護30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言